﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using Atlandiz.Data;

namespace Atlandiz.EnvanterVeZimmetYonetimi
{
    public partial class ListeZimmet : DevExpress.XtraEditors.XtraForm
    {
        public bool ForSelection = false;
        string ListeFiltre="%";

         public ListeZimmet()
        {
            InitializeComponent();
        }

        private void XtraForm1_Load(object sender, EventArgs e)
        {
            Army.EventConfirm = false;
            ZimmetYukle(ListeFiltre);
        }

        public void KDuzenle()
        {
            FormZimmet ZimmetFormu = new FormZimmet();
            ZimmetFormu.EvrakCinsi = int.Parse(_lwZimmetEvraklari.SelectedItems[0].SubItems[1].Text);
            ZimmetFormu.KayID = int.Parse(_lwZimmetEvraklari.SelectedItems[0].SubItems[0].Text);
            ZimmetFormu.ShowDialog();
            ZimmetYukle(ListeFiltre);
        }

        private void düzenleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (_lwZimmetEvraklari.SelectedItems.Count > 0)
            {
                KDuzenle();
            }
            else
            {
                MessageBox.Show("Lütfen, düzenlenecek kaydı seçiniz...");
            }
        }

        public void ZimmetYukle(string filtre)
        {
            _lwZimmetEvraklari.Items.Clear();
            _lwSecilenZimmetEvrakDetay.Items.Clear();

            string EkSorgu = " AND ((Personel.Ad+Personel.Soyad like '%" + ListeFiltre + "%') OR (Departman.DepAdi like '%" + ListeFiltre + "%') OR (SELECT Count(*) FROM \n" +
                "(\n" +
                "Select\n" +
                "zd.zdID [ID],\n" +
                "zd.UrunID [UrunID],\n" +
                "ct.chzTur [Cihaz/Yazılım],\n" +
                "cm.ChzMarka [Marka/Adı],\n" +
                "cmd.ChzModel [Model/Sürüm],\n" +
                "c.SeriNoIMEI [Seri/İmei/Lisans],\n" +
                "zd.Aciklama [Açıklama],\n" +
                "c.Maliyet [Maliyet],\n" +
                "c.ZimmetDegeri [Zimmet Değeri]\n" +
                "from ZimmetHDetay zd \n" +
                "left join Cihaz c on zd.UrunID=c.cID\n" +
                "left join CihazTur ct on c.ctID=ct.ctID\n" +
                "left join CihazMarka cm on c.cmID=cm.cmID\n" +
                "left join CihazModel cmd on c.cmdID=cmd.cmdID \n" +
                "where zd.zID=ZimmetKutuk.zID AND zd.UrunTipi=1\n" +
                "AND zd.isDeleted=0\n" +
                "AND (ct.chzTur like '%" + ListeFiltre + "%' or cm.ChzMarka like '%" + ListeFiltre + "%' or cmd.ChzModel like '%" + ListeFiltre + "%' or c.SeriNoIMEI like '%" + ListeFiltre + "%' or c.Aciklama like '%" + ListeFiltre + "%' or zd.Aciklama like '%" + ListeFiltre + "%')" +
                "UNION ALL\n" +
                "Select\n" +
                "zd.zdID [ID],\n" +
                "zd.UrunID [UrunID],\n" +
                "yu.yuFirmaUnvan [Cihaz/Yazılım],\n" +
                "yi.yiAdi [Marka/Adı],\n" +
                "ys.ySurum [Model/Sürüm],\n" +
                "y.LisansNo [Seri/İmei/Lisans],\n" +
                "zd.Aciklama [Açıklama],\n" +
                "y.Maliyet [Maliyet],\n" +
                "y.ZimmetDegeri [Zimmet Değeri]\n" +
                "from ZimmetHDetay zd \n" +
                "left join Yazilim y on zd.UrunID=y.yID\n" +
                "left join YazilimUretici yu on y.yuID=yu.yuID\n" +
                "left join YazilimIsim yi on y.yiID=yi.yiID\n" +
                "left join YazilimSurum ys on y.ysID=ys.ysID \n" +
                "where zd.zID=ZimmetKutuk.zID AND zd.UrunTipi=2\n" +
                "AND zd.isDeleted=0\n" +
                "AND (yu.yuFirmaUnvan like '%" + ListeFiltre + "%' or yi.yiAdi like '%" + ListeFiltre + "%' or ys.ySurum like '%" + ListeFiltre + "%' or y.LisansNo like '%" + ListeFiltre + "%' or y.Aciklama like '%" + ListeFiltre + "%' or zd.Aciklama like '%" + ListeFiltre + "%')" +
                ")ZDETAY)>0)\n";

            switch (filtre)
            {
                case "%":
                    EkSorgu = "";
                    break;
                default:
                    break;
            };


            if (Army.UserTipi != 1)
            {
                EkSorgu += " AND (\n" +
                    "SELECT COUNT(*) FROM (\n" +
                    "SELECT * FROM (\n" +
                    "select cID UrunID, 1 UrunTipi from Cihaz \n" +
                    "where DepoId IN (select id_depolar from KullaniciDepo where id_kullanici=" + Army.ActiveUserId + ") \n" +
                    "UNION \n" +
                    "select yID UrunID, 2 UrunTipi from Yazilim \n" +
                    "where DepoId IN (select id_depolar from KullaniciDepo where id_kullanici=" + Army.ActiveUserId + ") \n" +
                    ")KullanicininYetkinOlduguDeponunUrunleri \n" +
                    "INTERSECT \n" +
                    "select UrunID,UrunTipi from ZimmetHDetay where zID=ZimmetKutuk.zID \n" +
                    ")KESISIM \n" +
                    ")>0 \n";
            }

            string Sorgu = "SELECT \n" +
                "ZimmetKutuk.zID [ID],\n" +
                "ZimmetKutuk.EvrakCinsi [EvrakCinsi],\n" +
                "ZimmetKutuk.EvrakDate [Evrak Tarihi],\n" +
                "(CASE WHEN ZimmetKutuk.EvrakCinsi=1 THEN 'ZİMMET GİRİŞ' ELSE 'ZİMMET ÇIKIŞ' END) [Evrak Cinsi],\n" +
                "(Personel.Ad + ' ' + Personel.Soyad) [Ad, Soyad],\n" +
                "Departman.DepAdi [Departman],\n" +
                "Personel.Gorev [Görev],\n" +
                "(SELECT COUNT(*) FROM ZimmetHDetay zh WHERE zh.zID=ZimmetKutuk.zID)[Ürün Adeti],\n" +
                "((CASE WHEN TotalDegerCihaz.Maliyet IS NULL THEN 0 ELSE TotalDegerCihaz.Maliyet END)+(CASE WHEN TotalDegerYazilim.Maliyet IS NULL THEN 0 ELSE TotalDegerYazilim.Maliyet END)) [Maliyet],\n" +
                "((CASE WHEN TotalDegerCihaz.ZimmetDegeri IS NULL THEN 0 ELSE TotalDegerCihaz.ZimmetDegeri END)+(CASE WHEN TotalDegerYazilim.ZimmetDegeri IS NULL THEN 0 ELSE TotalDegerYazilim.ZimmetDegeri END)) [Zimmet Değeri]\n" +
                "FROM ZimmetHKutuk ZimmetKutuk\n" +
                "LEFT JOIN Personel ON ZimmetKutuk.pID = Personel.pID\n" +
                "LEFT JOIN Departman ON Personel.dID = Departman.dID\n" +
                "LEFT JOIN (SELECT ZimmetHDetay.zID, SUM(Cihaz.Maliyet)[Maliyet], SUM(Cihaz.ZimmetDegeri)[ZimmetDegeri]\n" +
                "FROM Cihaz LEFT JOIN\n" +
                "ZimmetHDetay ON Cihaz.cID = ZimmetHDetay.UrunID\n" +
                "WHERE (ZimmetHDetay.UrunTipi = 1) GROUP BY ZimmetHDetay.zID) TotalDegerCihaz ON TotalDegerCihaz.zID = ZimmetKutuk.zID\n" +
                "LEFT JOIN (SELECT ZimmetHDetay.zID, SUM(Yazilim.Maliyet)[Maliyet], SUM(Yazilim.ZimmetDegeri)[ZimmetDegeri]\n" +
                "FROM Yazilim LEFT JOIN\n" +
                "ZimmetHDetay ON Yazilim.yID = ZimmetHDetay.UrunID\n" +
                "WHERE (ZimmetHDetay.UrunTipi = 2) GROUP BY ZimmetHDetay.zID) TotalDegerYazilim ON TotalDegerYazilim.zID = ZimmetKutuk.zID\n" +
                "WHERE ZimmetKutuk.isDeleted=0\n" + EkSorgu;


            textBox1.Text = Sorgu;

            DataTable dt = Army.SQL().GetDataTable(Sorgu);
            foreach (DataRow item in dt.Rows)
            {
                ListViewItem ls = new ListViewItem(item[0].ToString());
                ls.SubItems.Add(item[1].ToString());
                ls.SubItems.Add(item[2].ToString());
                ls.SubItems.Add(item[3].ToString());
                ls.SubItems.Add(item[4].ToString());
                ls.SubItems.Add(item[5].ToString());
                ls.SubItems.Add(item[6].ToString());
                ls.SubItems.Add(item[7].ToString());
                ls.SubItems.Add(item[8].ToString());
                ls.SubItems.Add(item[9].ToString());

                _lwZimmetEvraklari.Items.Add(ls);
            }
        }

        public void ZimmetEvrakDetayYukle()
        {
            _lwSecilenZimmetEvrakDetay.Items.Clear();

            string Sorgu = "SELECT * FROM \n" +
                "(\n" +
                "Select\n" +
                "zd.zdID [ID],\n" +
                "zd.UrunID [UrunID],\n" +
                "zd.UrunTipi [ÜrünTipi],\n" +
                "(CASE WHEN zd.UrunTipi = 1 then 'Cihaz' ELSE 'Yazılım' END) [Ürün Tipi],\n" +
                "ct.chzTur [Cihaz/Yazılım],\n" +
                "cm.ChzMarka [Marka/Adı],\n" +
                "cmd.ChzModel [Model/Sürüm],\n" +
                "c.SeriNoIMEI [Seri/İmei/Lisans],\n" +
                "zd.Aciklama [Açıklama],\n" +
                "c.Maliyet [Maliyet],\n" +
                "c.ZimmetDegeri [Zimmet Değeri]\n" +
                "from ZimmetHDetay zd \n" +
                "left join Cihaz c on zd.UrunID=c.cID\n" +
                "left join CihazTur ct on c.ctID=ct.ctID\n" +
                "left join CihazMarka cm on c.cmID=cm.cmID\n" +
                "left join CihazModel cmd on c.cmdID=cmd.cmdID \n" +
                "where zd.zID=" + _lwZimmetEvraklari.SelectedItems[0].SubItems[0].Text + " AND zd.UrunTipi=1\n" +
                "UNION ALL\n" +
                "Select\n" +
                "zd.zdID [ID],\n" +
                "zd.UrunID [UrunID],\n" +
                "zd.UrunTipi [ÜrünTipi],\n" +
                "(CASE WHEN zd.UrunTipi = 1 then 'Cihaz' ELSE 'Yazılım' END) [Ürün Tipi],\n" +
                "yu.yuFirmaUnvan [Cihaz/Yazılım],\n" +
                "yi.yiAdi [Marka/Adı],\n" +
                "ys.ySurum [Model/Sürüm],\n" +
                "y.LisansNo [Seri/İmei/Lisans],\n" +
                "zd.Aciklama [Açıklama],\n" +
                "y.Maliyet [Maliyet],\n" +
                "y.ZimmetDegeri [Zimmet Değeri]\n" +
                "from ZimmetHDetay zd \n" +
                "left join Yazilim y on zd.UrunID=y.yID\n" +
                "left join YazilimUretici yu on y.yuID=yu.yuID\n" +
                "left join YazilimIsim yi on y.yiID=yi.yiID\n" +
                "left join YazilimSurum ys on y.ysID=ys.ysID \n" +
                "where zd.zID=" + _lwZimmetEvraklari.SelectedItems[0].SubItems[0].Text + " AND zd.UrunTipi=2\n" +
                ") Zimmet\n" +
                "ORDER BY Zimmet.ID\n";

            DataTable dt = Army.SQL().GetDataTable(Sorgu);

            foreach (DataRow item in dt.Rows)
            {
                ListViewItem ls = new ListViewItem(item[0].ToString());
                ls.SubItems.Add(item[1].ToString());
                ls.SubItems.Add(item[2].ToString());
                ls.SubItems.Add(item[3].ToString());
                ls.SubItems.Add(item[4].ToString());
                ls.SubItems.Add(item[5].ToString());
                ls.SubItems.Add(item[6].ToString());
                ls.SubItems.Add(item[7].ToString());
                ls.SubItems.Add(item[8].ToString());
                ls.SubItems.Add(item[9].ToString());
                ls.SubItems.Add(item[10].ToString());

                _lwSecilenZimmetEvrakDetay.Items.Add(ls);
            }

        }

        private void silToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (_lwZimmetEvraklari.SelectedItems.Count > 0)
            {
                if (Army.UserTipi == 1)
                {
                    int seciliZID = int.Parse(_lwZimmetEvraklari.SelectedItems[0].SubItems[0].Text.ToString());
                    PopupAreYouSure SilOnay = new PopupAreYouSure();
                    Army.EventMessage = "Seçilen Zimmet Evrağı{" + seciliZID + "}'na ait tüm kayıtlar silinecek,\n Emin misiniz?";
                    SilOnay.ShowDialog();

                    if (Army.EventConfirm)
                    {
                        Army.SQL().cmd("Update ZimmetHDetay SET isDeleted=1 where zID=" + seciliZID);
                        Army.SQL().cmd("Update ZimmetHKutuk SET isDeleted=1 where zID=" + seciliZID);
                        MessageBox.Show("Seçilen {" + seciliZID + "}Nolu Zimmet Evrağı başarı ile Silindi.", "Kayıt Silindi.", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        ZimmetYukle(ListeFiltre);

                    }

                }
                else
                {
                    MessageBox.Show("Bu işlem için yetkiniz yok!", "Yetkiniz Yok!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

            //if (_lwZimmetEvraklari.SelectedItems.Count > 0)
            //{
            //    if (Genel.UserTipi == 1)
            //    {
            //        int seciliZID = int.Parse(_lwZimmetEvraklari.SelectedItems[0].SubItems[0].Text);
            //        DialogResult sonuc;
            //        sonuc = MessageBox.Show("Seçilen Zimmet Evrağı{"+seciliZID+"}'na ait tüm kayıtlar silinecek. emin misiniz?", "Dikkat!", MessageBoxButtons.YesNo);
            //        if (sonuc == DialogResult.Yes)
            //        {
            //            SQL.cmd("Update ZimmetHDetay SET isDeleted=1 where zID=" + seciliZID);
            //            SQL.cmd("Update ZimmetHKutuk SET isDeleted=1 where zID=" + seciliZID);
            //            MessageBox.Show("{"+seciliZID+"}Nolu Zimmet Evrağı başarı ile silinmiştir.");
            //            ZimmetYukle();
            //        }
            //    }
            //    else
            //    {
            //        MessageBox.Show("Bu işlem için yetkiniz yok.");
            //    }
            //}
            //else
            //{
            //    MessageBox.Show("Lütfen, silinecek kaydı seçin");
            //}
        }

        private void listView1_DoubleClick(object sender, EventArgs e)
        {
            if (_lwZimmetEvraklari.SelectedItems.Count > 0 & ForSelection)
            {
                Army.SecilenID = int.Parse(_lwZimmetEvraklari.SelectedItems[0].SubItems[0].Text);
                Army.EventConfirm = true;
                this.Close();
            }
        }
  
        private void _btnKapat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void _btnListeGuncelle_Click(object sender, EventArgs e)
        {
            ZimmetYukle("%");
        }

   
        private void _btnYeniZimmetGiris_Click(object sender, EventArgs e)
        {

            if (AtlandizSmo.ShellIndoor() == false) {
                MessageBox.Show("Lisansız Kullanım kısıtlaması nedeniyle işlem devam edemiyor.", "Lisanssız Kullanım", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            
            FormZimmet z = new FormZimmet();
            z.EvrakCinsi = 1;
            z.KayID = 0;
            z.ShowDialog();

            ZimmetYukle("%");
        }

        private void _btnYeniZimmetCikis_Click(object sender, EventArgs e)
        {

            if (AtlandizSmo.ShellIndoor() == false)
            {
                MessageBox.Show("Lisansız Kullanım kısıtlaması nedeniyle işlem devam edemiyor.", "Lisanssız Kullanım", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            
            FormZimmet z = new FormZimmet();
            z.EvrakCinsi = -1;
            z.KayID = 0;
            z.ShowDialog();

            ZimmetYukle("%");
        }

        private void _btnAra_Click(object sender, EventArgs e)
        {
            ListeFiltre = _txtAraString.Text.ToString();
            ZimmetYukle(ListeFiltre);
            _txtAraString.Focus(); 
        }

        private void _lwZimmetEvraklari_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (_lwZimmetEvraklari.SelectedItems.Count > 0) {
                ZimmetEvrakDetayYukle();
            }
        }

        private void _btnAramaListesiniGuncelle_Click(object sender, EventArgs e)
        {
            ListeFiltre = _txtAraString.Text.ToString();
            ZimmetYukle(ListeFiltre);
            _txtAraString.Focus(); 
        }

    }
}